home *** CD-ROM | disk | FTP | other *** search
/ Language/OS - Multiplatform Resource Library / LANGUAGE OS.iso / smaltalk / manchest.lha / MANCHESTER / usenet / st80_pre4 / EnvVarFileList.st < prev    next >
Text File  |  1993-07-24  |  2KB  |  68 lines

  1. "    NAME        EnvVarFileList
  2.     AUTHOR        kww@cs.glasgow.ac.uk (Dr Kevin Waite)
  3.     FUNCTION Allows UNIX environment variables in FileListViews
  4.     ST-VERSIONS    2.5
  5.     PREREQUISITES     
  6.     CONFLICTS    
  7.     DISTRIBUTION      world
  8.     VERSION        1.1
  9.     DATE    10 Sep 90
  10. SUMMARY     The following file-in allows UNIX shell environment variables to be
  11. entered as the root of a file name in a FileListView.  For example,
  12. if I enter:
  13.     $HOME/bin
  14. I get to browse the files in directory /users/iii/kww/bin.  This greatly
  15. simplifies the browsing of files in important directories.  Note that the
  16. file-in extends only the UnixFilename class.  
  17. "
  18. !
  19. "
  20. Newsgroups: comp.lang.smalltalk
  21. Message-ID: <6254@vanuata.cs.glasgow.ac.uk>
  22. Date: 10 Sep 90 14:55:08 GMT
  23. Organization: Computing Sci, Glasgow Univ, Scotland
  24.  
  25. Email:   kww@uk.ac.glasgow.cs  (JANET)
  26.      kww%cs.glasgow.ac.uk@nsfnet-relay.ac.uk  (INTERNET)
  27. Address: Dept. of Computing Science,  University of Glasgow,
  28.      17 Lilybank Gardens,  Glasgow,  United Kingdom.  G12 8QQ
  29. "
  30.  
  31.  
  32. 'From Objectworks for Smalltalk-80(tm), Version 2.5 of 29 July 1989 on 10 September 1990 at 3:55:59 pm'!
  33.  
  34.  
  35.  
  36. !UnixFilename class methodsFor: 'private'!
  37.  
  38. baseDirectoryForList: list
  39.  
  40.     ^list first = (String with: self separator)
  41.         ifTrue:    [self named: list removeFirst]
  42.         ifFalse:    [list first first = $$ 
  43.                     ifTrue: [self lookupEnvironment: list]
  44.                     ifFalse: [self currentDirectory]]!
  45.  
  46. lookupEnvironment: list
  47.     "The first member of this list starts with a dollar sign and therefore
  48.     could be a dereferencing of a UNIX environment variable.  Lookup this
  49.     variable in the current environment and if it is there use its value as
  50.     the directory root, otherwise treat the dollar as an ordinary character."
  51.  
  52.     | environ key value  root |
  53.  
  54.     environ := CEnvironment userEnvironment.
  55.     key := list first copyFrom: 2 to: list first size.
  56.     value := environ at: key ifAbsent: [^self currentDirectory].
  57.  
  58.     root := self named: value.
  59.     (root exists and: [root isDirectory]) ifFalse: [
  60.         ^self currentDirectory].
  61.  
  62.     "The first part of the given name did correspond to an environment
  63.     variable with a legal directory name as its value.  Use that directory
  64.     as the base directory and strip off the name from the component list."
  65.     
  66.     list removeFirst. 
  67.     ^root! !
  68.